
//import $ivy.`com.typesafe::mima-reporter:0.1.18`
//import com.typesafe.tools.mima.lib.MiMaLib
//import com.typesafe.tools.mima.core._
//import mill._, scalalib._
//
//trait MiMa extends ScalaModule with PublishModule {
//  def previousVersions = T {
//    scalaVersion().split('.')(1) match {
//      case "10" => Seq("2.6.0")
//      case "11" => Seq("2.6.0")
//      case "12" => Seq("2.6.0")
//      case _    => Nil
//    }
//  }
//
//  def mimaBinaryIssueFilters: Seq[ProblemFilter] = Seq.empty
//
//  def previousDeps = T {
//    Agg.from(previousVersions().map { version =>
//      ivy"${pomSettings().organization}:${artifactId()}:${version}"
//    })
//  }
//
//  def previousArtifacts = T {
//    resolveDeps(previousDeps)().filter(_.path.segments.contains(artifactId()))
//  }
//
//  def mimaReportBinaryIssues: T[List[(String, List[String])]] = T {
//    val currentClassfiles = compile().classes.path
//    val classpath = runClasspath()
//
//    val lib = {
//      com.typesafe.tools.mima.core.Config.setup("sbt-mima-plugin", Array.empty)
//      val cpstring = classpath
//        .map(_.path)
//        .filter(os.exists)
//        .mkString(System.getProperty("path.separator"))
//      new MiMaLib(
//        com.typesafe.tools.mima.core.reporterClassPath(cpstring)
//      )
//    }
//
//    previousArtifacts().toList.map { path =>
//      val problems =
//        lib.collectProblems(path.path.toString, currentClassfiles.toString)
//      path.path.toString -> problems.filter { problem =>
//        mimaBinaryIssueFilters.forall(_.apply(problem))
//      }.map(_.description("current"))
//    }
//  }
//
//}
